package com.mapaower.project.dao;

import com.mapaower.project.entity.ProjectApplication;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 项目报名数据访问接口
 * 提供项目报名相关的数据库操作方法
 */
@Repository
public interface ProjectApplicationRepository extends JpaRepository<ProjectApplication, Long> {

    /**
     * 根据项目ID查找报名记录
     * @param projectId 项目ID
     * @return 报名记录列表
     */
    List<ProjectApplication> findByProjectId(Long projectId);

    /**
     * 根据开发人员ID查找报名记录
     * @param developerId 开发人员ID
     * @return 报名记录列表
     */
    List<ProjectApplication> findByDeveloperId(Long developerId);

    /**
     * 根据项目ID和开发人员ID查找特定报名记录
     * @param projectId 项目ID
     * @param developerId 开发人员ID
     * @return 报名记录
     */
    ProjectApplication findByProjectIdAndDeveloperId(Long projectId, Long developerId);

    /**
     * 根据项目ID和报名状态查找报名记录
     * @param projectId 项目ID
     * @param status 报名状态
     * @return 报名记录列表
     */
    List<ProjectApplication> findByProjectIdAndStatus(Long projectId, ProjectApplication.ApplicationStatus status);
}